package co.edu.udea.iw.dao;

import java.util.List;

import co.edu.udea.iw.dto.Dispositivo;
import co.edu.udea.iw.exception.IWDaoException;

/**
 * Interface que define los metodos que va a proveer el dao de Dispositivo
 * 
 * @author Santiago Ruiz
 * @author Bladimir Velez
 *
 */

public interface DispositivoDAO {

	/**
	 * Entrega la lista de todos los dispositivos existentes en base de datos
	 * 
	 * @return lista dispositivos
	 * @throws IWDaoException
	 */
	public List<Dispositivo> obtenerDispositivos() throws IWDaoException;

	/**
	 * Entrega los datos de un dispositivo dado su id
	 * 
	 * @param id
	 *            id del dispositivo
	 * @return instancia con los datos del dispositivo obtenido, si no existe el
	 *         disposito retorna null.
	 * @throws IWDaoException
	 */
	public Dispositivo obtenerDispositivo(Integer id) throws IWDaoException;

	/**
	 * Agrega un dispositivo
	 * 
	 * @param dispositivo
	 *            dispositivo a agregar
	 * @return void
	 * @throws IWDaoException
	 */
	public void agregarDispositivo(Dispositivo dispositivo)
			throws IWDaoException;

	/**
	 * Elimina un dispositivo
	 * 
	 * @param dispositivo
	 *            dispositivo a eliminar
	 * @return void
	 * @throws IWDaoException
	 */
	public void eliminarDispositivo(Dispositivo dispositivo)
			throws IWDaoException;

	/**
	 * Actualiza un dispositivo
	 * 
	 * @param dispositivo
	 *            dispositivo a actualizar
	 * @return void
	 * @throws IWDaoException
	 */
	public void actualizarDispositivo(Dispositivo dispositivo)
			throws IWDaoException;

}
